Device Driver function

1. 디바이스 드라이버 작성
- struct file_operation 정의
- open, release, read, write, ioctl 함수 구현
- init, exit 함수 구현
2. 커널에 디바이스 드라이버 등록 -init 함수
int res;
res=register_chardev();
res=register_blkdev();
res=register_netdev();
3. 컴파일/로딩
$make        // Makefile 작성 후 실행
$insmod <modulename.ko>        // 생성된 .ko 파일 load
4. 디바이스 파일 생성
$mknod [디바이스 파일 이름] [디바이스 타입] [주번호] [부번호]
5. 디바이스 파일에 입출력하는 응용프로그램 작성 및 테스트
디바이스 파일에 입출력하는 응용 프로그램을 작성하고, 테스트한다.

커널 영역에 침범하는 파일이기 때문에 작성에 유의
Header Files
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/init.h>
Function Prototypes & Definitions
int device_open(...) {...};
int device_release(...) {...};
ssize_t device_write(...) {...};
ssize_t device_read(...) {...};
File Operation
static struct file_operations device_fops = {
.open = device_read,
.release = device_release,
.write = device_write,
.read = device_read,
.ioctl = ... //deprecate
};
모듈 설치시 초기화 수행
모듈 제거시 반환 작업 수행
module_init(init_func);
module_exit(exit_func);
lsmod: 모듈 검색
rmmod <module name>

dmesg